約 6,512,523 件
https://w.atwiki.jp/atachi/pages/52.html
依存関係プロパティの基本実装 [#xa682a33] 依存関係プロパティの識別子を実装 [#i7e417dd] FrameworkPropertyMetadataで指定するメタデータについて [#a3e9a582] コレクションの依存関係プロパティ [#a4489562] 参考サイト コントロールを自作する場合に、コントロールが公開するプロパティは依存関係プロパティとして実装します。 依存関係プロパティとして実装すると、バインディングが使えるようになります。 リソース データ バインディング スタイル Animations メタデータのオーバーライド プロパティ値の継承 WPF デザイナーの統合 依存関係プロパティの基本実装 依存関係プロパティは次のようにDependencyPropertyを使用して値を管理します。 値の取得や設定はすべてGetValueメソッド/SetValueメソッドで行われます。 コントロールを使う側は、公開されているプロパティである依存関係プロパティだけしか見えません。 class MyCustomControl Control { // 依存関係プロパティの識別子 public static readonly DependencyProperty IsSpinningProperty = DependencyProperty.Register( "IsSpinning", // name 引数 typeof(Boolean), // propertyType 引数 typeof(MyCustomControl), // ownerType 引数 ); // 依存関係プロパティ public bool IsSpinning { get { return (bool)GetValue(IsSpinningProperty); } set { SetValue(IsSpinningProperty, value); } } } 依存関係プロパティの識別子を実装 DependencyProperty.Register()を使用して、 WPFが持つプロパティシステムにプロパティに関する情報を登録します。 引数名 設定内容例 説明 name "IsSpinning" プロパティシステムに登録するプロパティ名。 propertyType typeof(Boolean) プロパティの型情報。typeofを使って型情報を取り出す。 ownerType typeof(MyCustomControl) プロパティを定義したクラスの型情報。 typeMetadata new FrameworkPropertyMetadata(...) プロパティについての追加情報。FrameworkPropertyMetadata を使って指定する。省略可能。こちら validateValueCallback new ValidateValueCallback(...) プロパティの値についてのバリデーション。ValidateValueCallback を使って指定する。省略可能。 Registerの戻り値には依存関係プロパティに関する情報が含まれている。 依存関係プロパティに値を設定する場合や取得する場合はこのインスタンスをつかって行う。 このインスタンスは、public static readonlyで定義する必要がある。 FrameworkPropertyMetadataで指定するメタデータについて FrameworkPropertyMetadata を使用すると、プロパティに関する設定が行える。 プロパティの初期値 プロパティ変更時に呼び出されるコールバックメソッド WPFデザイナによるデザイン時の挙動 デフォルトのデータバインディングのモード VisualObjectツリーで親から子へのプロパティ継承 WPFデザイナに関係するプロパティがいくつかあります。 適切に設定することで、WPFデザイナ使用時のパフォーマンスがよくなります。 AffectsMeasureプロパティ値の変更時に、サイズ変更を伴うコントロールの再描画が必要。 AffectsArrangeプロパティ値の変更時に、サイズ変更を伴わない(自分より下階層のサイズ変更は許可)コントロールの再描画が必要。 AffectsRenderプロパティ値の変更時に、一切のサイズ変更が伴われないコントロールの再描画が必要。 コレクションの依存関係プロパティ カスタムコントロールのコンストラクタでSetValueを使ってsingletonなコレクション型インスタンスを作成する 依存関係プロパティ識別子は読み取り専用で登録する(DependencyProperty.RegisterReadOnly を使用する) class MyCustomControl Control { public MyCustomControl() base() { SetValue(ItemsPropertyKey, new List FrameworkElement () ); } private static readonly DependencyPropertyKey ItemsPropertyKey = DependencyProperty.RegisterReadOnly( "Items", typeof(List FrameworkElement ), typeof(MyCustomControl), new FrameworkPropertyMetadata(new List FrameworkElement ()) ); // 依存関係プロパティの識別子 public static readonly DependencyProperty IsSpinningProperty = DependencyProperty.Register( "IsSpinning", // name 引数 typeof(Boolean), // propertyType 引数 typeof(MyCustomControl), // ownerType 引数 ); public static readonly DependencyProperty ItemsProperty = ItemsPropertyKey.DependencyProperty; // 依存関係プロパティ public bool IsSpinning { get { return (bool)GetValue(IsSpinningProperty); } set { SetValue(IsSpinningProperty, value); } } public List FrameworkElement Items { get { return (List FrameworkElement )GetValue(ItemsProperty); } } } 参考サイト MSDN カスタム依存関係プロパティ
https://w.atwiki.jp/nanjitumtg/pages/642.html
No.1 [MI][MM][8th][コントロール][蛇かごトロン] 選択肢 投票 運がよければ勝ち越せそう (5) 運がよくても負け越しそう (1) +... 4 [MM] Rishadan Port 4 [8E] Urza s Mine 4 [8E] Urza s Power Plant 4 [8E] Urza s Tower 8 [UNH] Island 4 [MM] Brainstorm 4 [NE] Accumulated Knowledge 4 [VI] Impulse 4 [WL] Mind Stone 4 [VI] Sisay s Ring 4 [NE] Tangle Wire 4 [WL] Chimeric Sphere 4 [PY] Chimeric Idol 4 [VI] Snake Basket 思い出したかのように、過去からの刺客枠 その3(終) セット安価 「MI」「MM」「8E」 色安価 「茶単」 誰もが紙束を覚悟したその安価構築は、彼の斜め上の構築(とナチュラルトロン)によって初のお披露目大会、まさかの準優勝を果たすのだった。 本人では(ry No.2 [RAV][LRW][4E][コントロール][カラスローム] 選択肢 投票 運がよければ勝ち越せそう (1) 運がよくても負け越しそう (5) +... 4 [RAV] Overgrown Tomb 12 [RAV] Swamp (4) 6 [LRW] Forest (1) 4 [MOR] Mutavault 4 [EVE] Twilight Mire 3 [RAV] Stinkweed Imp 4 [RAV] Golgari Grave-Troll 4 [SHM] Demigod of Revenge 2 [EVE] Worm Harvest 4 [RAV] Putrefy 4 [EVE] Raven s Crime 4 [RAV] Life from the Loam 2 [RAV] Darkblast 3 [4E] Sylvan Library カラスの罪と壌土からの生命でスーパーアドバンテージ! No.3 [IA][ZEN][5E][コントロール][メガパーミッション] 選択肢 投票 運がよければ勝ち越せそう (7) 運がよくても負け越しそう (0) +... 4 [ZEN] Misty Rainforest 3 [AL] Thawing Glaciers 4 [CS] Mouth of Ronom 16 [CS] Snow-Covered Island 4 [WWK] Calcite Snapper 2 [ZEN] Sphinx of Jwar Isle 3 [WWK] Jace, the Mind Sculptor 4 [ZEN] Cancel 4 [CS] Rune Snag 4 [IA] Counterspell 4 [IA] Brainstorm 4 [AL] Force of Will 1 [IA] Power Sink 3 [5E] Nevinyrral s Disk カウンターしてジェイス出す作業 No.4 [LRW][ZEN][4E][コントロール][5Cマーフォークコントロール] 選択肢 投票 運がよければ勝ち越せそう (7) 運がよくても負け越しそう (0) +... 3 [EVE] Flooded Grove 1 [UNH] Island 1 [SHM] Mystic Gate 4 [SHM] Reflecting Pool 4 [LRW] Secluded Glen 4 [LRW] Vivid Creek 4 [LRW] Vivid Grove 4 [LRW] Wanderwine Hub 4 [MOR] Chameleon Colossus 4 [LRW] Silvergill Adept 2 [LRW] Sygg, River Guide 3 [MOR] Vendilion Clique 4 [EVE] Wistful Selkie 1 [ZEN] Scythe Tiger 4 [4E] Counterspell 4 [LRW] Cryptic Command 3 [LRW] Nameless Inversion 4 [LRW] Thoughtseize 2 [4E] Wrath of God 人はみな旅に出る・・・光り輝く道の先・・ いつか出会う答えを求めて・・・ No.5 [ALA][LRW][10E][ヤルデス][アンブロークン~沈まぬ太陽~] 選択肢 投票 運がよければ勝ち越せそう (14) 運がよくても負け越しそう (2) +... 4 [SHM] Mystic Gate 2 [EVE] Fetid Heath 3 [10E] Adarkar Wastes 4 [LRW] Vivid Creek 4 [SHM] Reflecting Pool 3 [LRW] Vivid Meadow 4 [ALA] Arcane Sanctum 3 [LRW] Mulldrifter 2 [MOR] Reveillark 3 [ARB] Wall of Denial 4 [ARB] Meddling Mage 4 [ALA] Tidehollow Sculler 3 [MOR] Declaration of Naught 2 [ALA] Elspeth, Knight-Errant 3 [10E] Pithing Needle 4 [ALA] Esper Charm 4 [LRW] Thoughtseize 4 [SHM] Runed Halo 指定しまくり☆ ※良い子は相手のデッキレシピを横に置いて使用してね No.6 [TSP][ALA][9E][ボードコントロール][重いは強い] 選択肢 投票 運がよければ勝ち越せそう (1) 運がよくても負け越しそう (2) +... 4 [ZEN] Mountain (2) 3 [ZEN] Island (2a) 3 [ZEN] Swamp (2a) 1 [TSP] Urza s Factory 4 [ALA] Crumbling Necropolis 2 [TSP] Academy Ruins 4 [TSP] Mishra, Artificer Prodigy 4 [TSB] Shadowmage Infiltrator 4 [TSP] Lotus Bloom 4 [ALA] Obelisk of Grixis 2 [TSP] Phyrexian Totem 3 [ALA] Cruel Ultimatum 2 [CFX] Nicol Bolas, Planeswalker 4 [TSP] Chromatic Star 4 [IA] Icy Manipulator 2 [ARB] Mistvein Borderpost 2 [ARB] Veinfire Borderpost 2 [DK] Blood Moon 4 [DK] Fellwar Stone 2 [MR] Loxodon Warhammer 右手を信じれば No.7 [LRW][ALA][4E][コントロール][Beat_The_Seasoning] 選択肢 投票 運がよければ勝ち越せそう (2) 運がよくても負け越しそう (2) +... 1 [ALA] Arcane Sanctum 1 [CH] City of Brass 1 [EVE] Cascade Bluffs 1 [CFX] Rupture Spire 1 [SHM] Mystic Gate 1 [SHM] Wooded Bastion 1 [EVE] Twilight Mire 1 [SHM] Sunken Ruins 1 [ALA] Seaside Citadel 1 [ALA] Savage Lands 1 [EVE] Rugged Prairie 1 [ALA] Crumbling Necropolis 1 [MOR] Murmuring Bosk 1 [ALA] Jungle Shrine 1 [SHM] Graven Cairns 1 [EVE] Flooded Grove 1 [SHM] Fire-Lit Thicket 1 [EVE] Fetid Heath 1 [LRW] Vivid Meadow 1 [LRW] Vivid Marsh 1 [LRW] Vivid Grove 1 [LRW] Vivid Creek 1 [LRW] Vivid Crag 1 [SHM] Reflecting Pool 1 [CFX] Exotic Orchard 1 [ARB] Slave of Bolas 1 [LRW] Fertile Ground 1 [ARB] Vengeful Rebirth 1 [ARB] Terminate 1 [4E] Sylvan Library 1 [ALA] Punish Ignorance 1 [LRW] Ponder 1 [LRW] Oblivion Ring 1 [CFX] Obelisk of Alara 1 [4E] Nevinyrral s Disk 1 [MOR] Mind Spring 1 [CFX] Martial Coup 1 [4E] Swords to Plowshares 1 [ALA] Esper Charm 1 [4E] Wrath of God 1 [ALA] Agony Warp 1 [ALA] Cruel Ultimatum 1 [CFX] Nicol Bolas, Planeswalker 1 [4E] Counterspell 1 [LRW] Cryptic Command 1 [CFX] Path to Exile 1 [ARB] Maelstrom Pulse 1 [4E] Fellwar Stone 1 [ARB] Lavalanche 1 [LRW] Jace Beleren 1 [EVE] Hallowed Burial 1 [ALA] Grixis Charm 1 [LRW] Garruk Wildspeaker 1 [SHM] Firespout 1 [ALA] Ajani Vengeant 1 [ALA] Elspeth, Knight-Errant 1 [ARB] Deny Reality 1 [LRW] Colfenor s Plans 1 [ARB] Bituminous Blast 1 [MOR] Bitterblossom ∧_∧ カード名指定?ぼこぼこにしてやんよ ( ・ω・)=つ≡つ (っ ≡つ=つ / ) ババババ ( / ̄∪ No.8 [LRW][MR][4E][コントロール][クイックントースト] 選択肢 投票 運がよければ勝ち越せそう (3) 運がよくても負け越しそう (13) +... 4 [SHM] Mystic Gate 4 [SHM] Reflecting Pool 4 [LRW] Vivid Creek 4 [LRW] Vivid Meadow 2 [CH] City of Brass 2 [LRW] Vivid Marsh 2 [UNH] Island 2 [EVE] Flooded Grove 3 [FD] Bringer of the Blue Dawn 4 [LRW] Mulldrifter 3 [FD] Eternal Witness 4 [LRW] Thoughtseize 4 [LRW] Cryptic Command 3 [DS] Pulse of the Fields 4 [4E] Wrath of God 4 [4E] Swords to Plowshares 4 [4E] Counterspell 1 [FD] Rude Awakening 2 [MR] Crystal Shard アドバンテージ損失の補填をテーマに No.9 [IN][MR][M11][コントロール][ドメイン巫女ブリンガー] 選択肢 投票 運がよければ勝ち越せそう (2) 運がよくても負け越しそう (0) +... 11 [M11] Forest (2) 2 [M11] Island (2) 2 [DS] Mirrodin s Core 1 [M11] Mountain (2) 2 [M11] Plains (2) 4 [M11] Swamp (1) 1 [FD] Bringer of the Black Dawn 4 [FD] Bringer of the Blue Dawn 1 [FD] Bringer of the White Dawn 4 [FD] Etched Oracle 4 [FD] Eternal Witness 4 [MR] Solemn Simulacrum 4 [M11] Sylvan Ranger 4 [M11] Cultivate 3 [AP] Lay of the Land 1 [MR] Mindslaver 3 [AP] Pernicious Deed 2 [FD] Rude Awakening 1 [AP] Vindicate 2 [FD] Wayfarer s Bauble 真理を言っちゃうけど、巫女はかわいい No.10 [TSP][4E][ONS][コントロール][無限カウンター] 選択肢 投票 運がよければ勝ち越せそう (3) 運がよくても負け越しそう (2) +... 4 [FUT] Tolaria West 4 [5E] Urza s Tower 4 [5E] Urza s Power Plant 4 [5E] Urza s Mine 8 [TSP] Island (4) 2 [PLC] Aeon Chronicler 4 [FUT] Venser, Shaper Savant 3 [TSP] Triskelavus 4 [SC] Decree of Silence 4 [TSP] Clockspinning 4 [TSP] Ancestral Vision 2 [FUT] Pact of Negation 4 [5E] Brainstorm 3 [TSB] Whispers of the Muse 3 [FUT] Foresee 3 [5E] Fellwar Stone 数々の伝説を生みだした無限カウンター・・・ No.11 [TE][LRW][10E][コントロール][グールの誓い] 選択肢 投票 運がよければ勝ち越せそう (2) 運がよくても負け越しそう (1) +... 5 [LRW] Island (1) 4 [TE] Reflecting Pool 4 [SHM] Sunken Ruins 1 [LRW] Swamp (1) 4 [10E] Underground River 4 [LRW] Vivid Creek 1 [LRW] Vivid Marsh 1 [SH] Volrath s Stronghold 1 [LRW] AEthersnipe 2 [10E] Bottle Gnomes 4 [SHM] Faerie Macabre 2 [EVE] Glen Elendra Archmage 4 [LRW] Mulldrifter 1 [MOR] Nevermaker 4 [LRW] Shriekmaw 3 [MOR] Vendilion Clique 2 [LRW] Cryptic Command 4 [TE] Intuition 1 [LRW] Makeshift Mannequin 4 [10E] Mind Stone 4 [EX] Oath of Ghouls Faerie MacabreとOath of Ghoulsで想起を使い回すという、ファニーでエクセレントかつテクニカルなクリーチャー・コントロールデッキ
https://w.atwiki.jp/sampleisbest/pages/350.html
開発環境 Microsoft Visual Studio Express 2013 for Windows Desktop 実行環境 Microsoft Windows 8.1 (64bit) プロジェクトの種類 Visual C#/WPF アプリケーション プロジェクト名 WpfDataGridTest
https://w.atwiki.jp/atachi/pages/28.html
XAMLの記述 [#g473e2c1] 属性の設定(属性構文) [#h71a06a8] 省略可能なプロパティ [#uece8203] テキストコンテンツ [#u9bf2fb3] マークアップ拡張書式 [#yba17a24] XAMLの構文定義について [#nedec8ff] 名前空間(x ) [#u379ac86] CLR名前空間をXAMLの名前空間から参照 [#zc8d4083] XAMLと分離コード [#f4ac851b] XAML内コード(インラインコード) [#ob04d859] リソース [#o78d48eb] リソースの定義方法 [#t78c704c] 任意のクラスのインスタンス コレクション ObjectDataProvider XmlDataProvider リソースの使用方法 [#y13c2f99] コードからリソースを参照する方法 [#p13e55bc] オブジェクトのツリー構造 [#se1e5f6c] VisualObject [#w2c1331e] XAMLの記述 XAMLでの各要素はそのままクラスコードに直結します。 XAMLでButton要素を使用する場合、Button要素の実体はSystem.Windows.Controls.Buttonクラスです。 そのためXAMLではXMLの要素をオブジェクト要素と呼んでいます。 属性の設定(属性構文) XMLの属性は、XAMLではオブジェクトのプロパティへ値を設定する意味を持ちます。 Button Text="Buttonです" / XAMLで記述されたこの内容は、次のようなC#コードと同じ意味を持ちます。 Button btn = new Button(); btn.Text = "Buttonです"; ただし、XAMLでの記述のすべてがC#コードの等価コードとして表現できません。 次のXAMLはBackgroundプロパティを設定していますが、見たとおりの解釈ではC#等価コードとしては表現できません。 Button Text="Buttonです" Background="Blue"/ Button btn = new Button(); btn.Text = "Buttonです"; btn.Background = "Blue"; // コンパイルエラー XAMLではBackgroundプロパティの値を文字列で設定していますが、ButtonクラスのBackgroundプロパティの型は文字列型ではないため、もしXAMLの見たままのコードをC#コードで記述しようとするとエラーが発生するのです。 ButtonクラスのBackgroundプロパティはBrush型です。 XAMLでは、与えられた「Blue」という文字を巧妙にBrush型に変換し(型コンバーター)、ButtonクラスのBackgroundプロパティへ設定しています。 属性の記述方法は、XMLの属性として記述する方法以外にも次のような記述方法ができます。 Button Button.Text Buttonです /Button.Text Button.Background SolidColorBrush Color="Blue"/ /Button.Background /Button このようなプロパティの記述方法をプロパティ要素と呼びます。 この記述内容は、説明してきたXAMLと同じ結果をもたらしますが、 Backgroundプロパティの設定ではSolidColorBrush要素を明示的に記述するなど、属性がどんな変換がなされているかが表現できています。 オブジェクトのプロパティを設定するにあたって、属性構文を使うかプロパティ要素を使うかはスタイルの問題で重要ではありません。 省略可能なプロパティ オブジェクト要素が持つプロパティの中には、 コンテンツプロパティ と呼ばれるプロパティが設定されているものがあります。 コンテンツプロパティは、プロパティ要素による記述で、ノードの記述を省略しても良いプロパティ要素です。 Border.Childはコンテンツプロパティなので省略しても良いことになっているため、前者のBorderは「 Border.Child 」のノードを省略しています。 次の2つのBorderはどちらも同じデザインです。 Border TextBox Width="300"/ /Border !--explicit equivalent(省略しない場合)-- Border Border.Child TextBox Width="300"/ /Border.Child /Border テキストコンテンツ Button要素のラベルに表示するテキストの設定はText属性で指定していましたが、Buttonのように文字列がコンテンツとして重要な意味を持つオブジェクト要素の中には、次のように記述できるものがあります。 Button Buttonです /Button マークアップ拡張書式 XAMLの属性には文字列としての意味を持つ値しか記述できませんが、画像などのリソースや表示したい内容を動的に変更(バインディング)したい場合があります。 属性にこのような特殊な方法で値を設定する方法としてマークアップ拡張機能があります。 マークアップ拡張機能を使うには、次のマークアップ拡張書式をXAMLの属性に記述します。 {拡張名 値 } {拡張名 キー1=値1,キー2=値2 ...} 拡張名 用途 説明 Binding データバインディング DynamicResource リソース参照 MultiBinding データバインディング PriorityBinding データバインディング TemplateBinding データバインディング RelativeSource データバインディング データバインディングでBinding.RelativeSourceプロパティに対してのみ使用できるマークアップ拡張 StaticResource リソース参照 定義済みのインスタンスを検索し、XAMLの属性値として使用する。(リソースについて) XAMLの構文定義について 用途 プレフィックス定義 定義の名前空間 XAMLの名前空間 xmlns http //schemas.microsoft.com/winfx/2006/xaml/presentation 追加の名前空間 xmlns x http //schemas.microsoft.com/winfx/2006/xaml リファレンス 名前空間(x ) ディレクティブ 説明 x Code インラインコードを記述する(詳細) x XData 属性 x Array x Class x ClassModifier x FieldModifier x Key x Name x Shared x Subclass x TypeArguments マークアップ拡張 説明 x Null XAML プロパティの値として null を指定する。 x Static x Type 指定した XAML 型の基になる型の CLR Type オブジェクトを指定します。 CLR名前空間をXAMLの名前空間から参照 xmlns属性に「clr-namespace ***」という書式で、CLR名前空間を参照するXAML名前空間を定義できる。 Window xmlns dn="clr-namespace System;assembly=mscorlib" ... /Window .NET Frameworksの名前空間をバインドすると便利かもしれない。 参照方法 説明 clr-namespace System;assembly=mscorlib Int16やDecimalといった基本型 clr-namespace System.Collections;assembly=mscorlib Listなどのコレクション型 XAMLと分離コード XAMLは、それ自体の追加の定義を分離コードで定義することができます。 Page xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" x Class="ExampleNamespace.ExamplePage" /Page このようにx Class属性を使用して、このXAMLに対応したクラスをExampleNamespace.ExamplePageに実装します。 この場合、Pageオブジェクト要素の分離コードとなるため、ExampleNamespace.ExamplePageクラスはPageクラスをスーパークラスに設定しなければなりません。 namespace ExampleNamespace { public partial class ExamplePage Page { public ExamplePage() { InitializeComponent(); // 必須 } } } ExamplePageクラスに実装したメソッドやプロパティはXAMLから呼び出すことができます。また、XAMLで定義した名前付きのオブジェクト要素をExamplePageクラスから呼び出すこともできます。 動作的にはIDEによってXAMLファイルはC#コードにコンバートされます。 C#ではクラスの定義を複数のファイルに記述することができるクラス(パーシャルクラス)があるので、プログラマが記述するコードとツールが出力するコードを分けることができます。(上記のように分離コードではpartial修飾子をつけてクラスを定義している) XAML内コード(インラインコード) x Code要素を使ってXAML内にコードを記述することができます。 Page xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" x Code ![CDATA[ void Clicked(object sender, RoutedEventArgs e) { button1.Content = "Hello World"; } ]] /x Code Button Name="button1" Click="Clicked" Click Me! /Button /Page インラインコードは短いロジックを記述するには便利ですが、使用にはいくつかの制限があります。 インターフェースとロジックとの切り分けが曖昧 プラグマの記述ができない(特に#ifdefがつかえないのは痛い) リソース リソースを使用するにはルート要素が持つResourcesプロパティを使用します。 外部リソースでは再利用可能なスタイルやインスタンスなどを定義したファイルをリソースとして定義しておくことができます。 外部リソースを1つだけ読み込む場合には、Resourcesに直接ResourceDictionary要素を子要素に追加していきます。 複数の外部リソースを読み込む場合は、次のようにリソースのマージを行います。 Window.Resources ResourceDirectory ResourceDirectory.MergedDictionaries ResourceDictionary Source="MyResource1.xaml" / ResourceDictionary Source="MyResource2.xaml" / ResourceDictionary Source="MyResource3.xaml" / /ResourceDirectory.MergedDictionaries /ResourceDirectory /Window.Resources 参考 MSDN リソースの概要 リソースの定義方法 任意のクラスのインスタンス Window.Resources SolidColorBrush x Key="resBrush" Color="Yellow" / /Window.Resources コレクション col ArrayList x Key="DataSource" sys DateTime 1/2/2003 5 00 00 /sys DateTime sys DateTime 4/5/2006 13 13 13 /sys DateTime sys DateTime 7/8/2009 23 59 59 /sys DateTime /col ArrayList .NET Frameworksのコレクションクラスを使用するために、XMLノードの属性にxmlns属性を使ってそれぞれのコレクションに名前をつけます。 上記のサンプルコードでのcolやsysといった名前空間は次の通りです。 xmlns sys="clr-namespace System;assembly=mscorlib" xmlns col="clr-namespace System.Collections;assembly=mscorlib" ObjectDataProvider Window.Resources !-- the customers datasource -- ObjectDataProvider x Key="CustomerDataProvider" ObjectType="{x Type local CustomerDataProvider}"/ ObjectDataProvider x Key="Customers" MethodName="GetCustomers" ObjectInstance="{StaticResource CustomerDataProvider}" / !-- the orders datasource -- ObjectDataProvider x Key="OrdersDataProvider" ObjectType="{x Type local OrdersDataProvider}"/ ObjectDataProvider x Key="Orders" MethodName="GetOrdersByCustomer" ObjectInstance="{StaticResource OrdersDataProvider}" ObjectDataProvider.MethodParameters x Static Member="system String.Empty"/ /ObjectDataProvider.MethodParameters /ObjectDataProvider /Window.Resources ObjectDataProviderはObjectInstanceに指定した任意のインスタンスからデータを取得する。 class MyData { public string[] GetNames() { return new string[] {"北海道","青森","秋田"}; } } XmlDataProvider XmlDataProvider x Key="MyDataSource" XPath="/Companies" x XData Companies xmlns="" Company Name Acme Inc. /Name Contact Name John Doe /Name PhoneNumber 111 /PhoneNumber PhoneNumber 222 /PhoneNumber /Contact Contact Name Billy Bob /Name PhoneNumber 333 /PhoneNumber PhoneNumber 444 /PhoneNumber /Contact /Company Company Name Large Corp. /Name /Company /Companies /x XData /XmlDataProvider リソースの使用方法 StaticResourceマークアップ拡張 コードからの利用 コードからリソースを参照する方法 ResourcesプロパティにアクセスするかFindResourceメソッドを使用します。 // Resourcesプロパティを使用してリソースを取得 SolidColorBrush scb = this.Resources["resBrush"] as SolidColorBrush; SolidColorBrush scb2 = this.Resources["resBrush2"] as SolidColorBrush; SolidColorBrush escb = this.FindResource("resBrush") as SolidColorBrush; Contract.Requires(scb == escb, "異なるリソースです"); ソースからリソースを参照できるので、次のようにXAMLで定義したリソースをソースコードから初期化して、任意のデータが初期化されたインスタンスをリソースとして定義できます。 public partial class MainPage UserControl{ public MainPage() { InitializeComponent(); MainData data = (MainData)Resources["mainDataDataSource"]; data.GridItemList = new List GridItem (); data.GridItemList.Add(new GridItem() { Id = "001", Name = "test001", Comment = "テスト001さんです。" }); data.GridItemList.Add(new GridItem() { Id = "002", Name = "test002", Comment = "テスト002さんです。" }); data.GridItemList.Add(new GridItem() { Id = "003", Name = "test003", Comment = "テスト003さんです。" }); data.GridItemList.Add(new GridItem() { Id = "004", Name = "test004", Comment = "テスト004さんです。" }); data.GridItemSelectIndex = 0; }} UserControl xmlns data="clr-namespace System.Windows.Controls;assembly=System.Windows.Controls.Data" x Class="BindingSample01.MainPage" xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" xmlns d="http //schemas.microsoft.com/expression/blend/2008" xmlns mc="http //schemas.openxmlformats.org/markup-compatibility/2006" xmlns appDatas="clr-namespace BindingSample01.Datas" mc Ignorable="d" d DesignWidth="640" d DesignHeight="480" UserControl.Resources appDatas MainData x Key="mainDataDataSource"/ /UserControl.Resources Grid x Name="LayoutRoot" DataContext="{Binding Source={StaticResource mainDataDataSource} }" Grid.ColumnDefinitions ColumnDefinition Width="200"/ ColumnDefinition Width="*"/ /Grid.ColumnDefinitions data DataGrid Grid.Column="0" AutoGenerateColumns="False" ItemsSource="{Binding GridItemList, Mode=TwoWay}" SelectedIndex="{Binding GridItemSelectIndex, Mode=TwoWay}" data DataGrid.Columns data DataGridTextColumn Header="ID" Binding="{Binding Id, Mode=TwoWay}"/ data DataGridTextColumn Header="NAME" Binding="{Binding Name, Mode=TwoWay}"/ /data DataGrid.Columns /data DataGrid StackPanel Grid.Column="1" DataContext="{Binding GridItemSelectedItem, Mode=TwoWay}" TextBox Text="{Binding Id, Mode=TwoWay}" /TextBox TextBox Text="{Binding Name, Mode=TwoWay}" /TextBox TextBox Text="{Binding Comment, Mode=TwoWay}" /TextBox /StackPanel /Grid /UserControl オブジェクトのツリー構造 XAMLは次のようにXMLをネストしてレイアウトを作成します。 DockPanel Name="ParentElement" xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" !--implicit DockPanel.Children -- ListBox DockPanel.Dock="Top" !--implicit ListBox.Items -- ListBoxItem TextBlock Dog /TextBlock /ListBoxItem ListBoxItem TextBlock Cat /TextBlock /ListBoxItem ListBoxItem TextBlock Fish /TextBlock /ListBoxItem !--implicit /ListBox.Items -- /ListBox Button Height="20" Width="100" DockPanel.Dock="Top" Buy a Pet /Button !--implicit /DockPanel.Children -- /DockPanel このツリー構造には、UIに関するノードとデータに関するノードが混じっています。 XAMLではこのような階層構造を論理ツリーと呼びます。 UIに関するノードだけを含めたものをビジュアルツリーと呼びます。 これらツリー構造はXMALに記述された構造がすべてではありません。 Buttonノードは次のようなビジュアルツリーを持ちます。 Button Chrome ContentPresenter StackPanel Image / TextBlock / /StackPanel /ContentPresenter /Chrome /Button VisualStudioのフォームエディタにはツールバーにButtonコントロールがあり、それを貼り付けるだけでボタンが表示されますが、ButtonコントロールはさらにImageコントロールやTextBlockコントロールによって構成されていることがわかります。 VisualObject コントロールやコンテナなどUIのレイアウトや操作に関する機能を持つコンポーネントをVisualObjectと呼びます。 XAMLによるフォームのレイアウトで、ビジュアルツリーはVisualObjectのノードだけ抽出してできたツリー構造を示します。 VisualObjectはSystem.Windows.Media.Visualクラスをスーパークラスにもつクラスのことです。
https://w.atwiki.jp/nina_a/pages/61.html
テンプレート(Templates) このページを編集 概要 すべてのWPFコントロールは"見た目"を持たないように設計されている.ただし,既定の見た目を持っており,これからVisualTreeが作成される.この見た目を決めるものがコントロールテンプレートと呼ばれるものであり,XAMLで定義されている. コントロールの標準のテンプレートを表示する このプログラムは Matthew MacDonald:Pro WPF in C# 2010 Windows Presentation Foundation in .Net 4 に掲載されているものをもとに作成した. +コントロールの標準のテンプレートを表示するサンプルプログラム XAML Window x Class="WpfSampleApplication.MainWindow" xmlns="http //schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns x="http //schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="600" Width="1000" Loaded="Window_Loaded" StackPanel Orientation="Horizontal" Name="layoutRoot" TreeView Name="lstTypes" SelectedItemChanged="lstTypes_SelectedItemChanged" Width="400"/ TextBox Name="txtTemplate" Width="600" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"/ /StackPanel /Window C# using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Globalization; using System.Reflection; using System.Xml; using System.Windows.Markup; namespace WpfSampleApplication { /// summary /// MainWindow.xaml の相互作用ロジック /// /summary public partial class MainWindow Window { public MainWindow() { InitializeComponent(); } private void Window_Loaded(object sender, RoutedEventArgs e) { Type controlType = typeof(Control); List Type derivedTypes = new List Type (); // Search all the types in the assembly where the Control class is defined. Assembly assembly = Assembly.GetAssembly(typeof(Control)); foreach (Type type in assembly.GetTypes()) { // Only add a type of the list if it s a Control, a concrete class, // and public. if (type.IsSubclassOf(controlType) !type.IsAbstract type.IsPublic) { derivedTypes.Add(type); } } // Sort the types. The custom TypeComparer class orders types // alphabetically by type name. derivedTypes.Sort(new AlphabeticalComparer()); // Show the list of types. lstTypes.ItemsSource = derivedTypes; } private void lstTypes_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs object e) { try { // Get the selected type. Type type = (Type)lstTypes.SelectedItem; // Instantiate the type. ConstructorInfo info = type.GetConstructor(System.Type.EmptyTypes); Control control = (Control)info.Invoke(null); // Add it to the grid (but keep it hidden). control.Visibility = Visibility.Collapsed; layoutRoot.Children.Add(control); // Get the template. ControlTemplate template = control.Template; // Get the XAML for the template. XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; StringBuilder sb = new StringBuilder(); XmlWriter writer = XmlWriter.Create(sb, settings); XamlWriter.Save(template, writer); // Display the template. txtTemplate.Text = sb.ToString(); // Remove the control from the grid. layoutRoot.Children.Remove(control); } catch (Exception err) { txtTemplate.Text = " テンプレートの生成に失敗しました。 " + err.Message + " "; } } private class AlphabeticalComparer IComparer Type { public int Compare(Type x, Type y) { return string.Compare(x.FullName, y.FullName); } } } } カテゴリ:WPF 名前
https://w.atwiki.jp/osinko/pages/117.html
<サンプルコード> オブジェクトコレクションをXAMLの中で作成しリストボックスにバインド、さらにテキストボックスに選択したアイテムをバインドさせる バインディングコーディング_例 値の有効性(ルール)の適用(バインディングで行う) リソースコーディングorリソースプロパティウインドウ操作例 スケールセレクタの作成例(コンボボックスとXMLデータプロパイダオブジェクトとのバインディング) 画像をタイリングして領域を塗りつぶす CLRオブジェクトをXAML形式のファイルで出力する XAMLを使わずCLRでコントロール等を配置 Contentプロパティの利用例 依存プロパティ、DependencyObject、Bindingの実装のサンプル データコンテキストの仕組み StyleとSetterの適用範囲のサンプル コレクション走査パス+匿名クラス+日本語変数の利用 WPFでのマルチスレッド処理のサンプルコード 破線ラインの描画 (基礎的で重要な考えなのでよく理解しておく事:INotifyPropertyChangedを利用している。これはDependencyObjectで自動実装できるので利用する機会は少ない)CLRコードでバインディングを作成する C#WPF WPFでファイルを開くコモンダイアログを使用する 追加資料:Microsoft.Win32 ObservableCollection(T) クラス ObservableCollection を作成およびバインドする
https://w.atwiki.jp/lavato_heros/pages/325.html
こんとろーる 用語集 解説 相手が出す強力なユニットをいなし、SP・手札・デッキなどの面でアドを取っていくデッキの総称。 対義語はビートダウン。 相手のデッキやカードを出すタイミングの読みが必要なため、ビートダウンとは違い、玄人好みのデッキと言える。 また、暴走竜『バルフィラ』と右の盾『カファール』EXの修正によりフィニッシャーを失い、 亡国の女魔法剣士という強力なメタカードも失ってしまった。 だが、刺されば強力なデッキぞろいであり、上級者を中心に使用されている。 LHにおけるコントロールデッキ 【フェティスコントロール】 【星の怒り】 【メタビート】 【ファイルアウト】 【ハンデス】 【SPロック】 【不死・霊体】 【魔剣】 などなど。 関連用語 ビートダウン
https://w.atwiki.jp/silver_emblem/pages/33.html
開発技術系トップへ戻る Windows Presentation Foundation(WPF) .NET Framework 3.0に含まれるユーザインタフェースサブシステムである。 WPFは、ユーザインタフェースとロジックを明確に区別する一貫したプログラミングモデルを提供する。 WPFアプリケーションはデスクトップで実行するだけでなくウェブブラウザ上で配置・実行することができる。 WPFによって、以下の表現手法を統一的に利用することが出来る。 ユーザインタフェース、2Dおよび3Dオブジェクトの描画 ベクトルグラフィックス ラスタグラフィックス アニメーション、音声および動画の再生 .NET Framework 3.0はWindows Vistaにプリインストールされており、Windows XP SP2およびWindows Server 2003でも利用できる。 【グラフィックス】 ウインドウを含め、全てのグラフィックスはDirect3Dを介して描画される。 これにより、高度なグラフィックを単一の方法で利用することができる。 Direct3Dを通して描画することにより、ビデオカード上のGPUに描画処理を任せることが可能になる。これはCPUの負荷を軽減することにつながる。 ベクトルグラフィックスをサポートする。これは損失のない拡大縮小を可能にする。 3Dモデルのレンダリングや相互作用をサポートする。 【配置】 WPFは通常のスタンドアローンアプリケーションだけでなく、XAMLブラウザアプリケーション (XBAP) として配置することもできる。 スタンドアローンアプリケーションは、ClickOnceやMicrosoft Windows Installer (MSI) などのインストーラによってローカルコンピュータ上に配置されるアプリケーションである。 XAMLブラウザアプリケーション (XBAP) は、Internet Explorerなどのウェブブラウザによってホストされるアプリケーションである。コンピュータリソースへのアクセスやWPFの機能は一部制限される。 【相互互換性】 Windows Formsとの相互運用も可能である(ElementHost、WindowsFormsHostクラス)。 【マルチメディア】 WPFはブラシ、ペン、幾何図形、変形などの基本的な2Dグラフィックス機能を提供する。 WPFで提供される3D機能はDirect3Dのサブセットである。しかし、WPFではよりユーザインタフェース (UI) などの要素に密接に利用することができる。これによって3DのUI、文書、メディアなどが可能になる。 一般的な画像フォーマットをサポートする。 WMV、MPEG、AVIフォーマットの動画をサポートする。 時間ベースのアニメーションをサポートする。これはシステムのパフォーマンスに依存せずアニメーションのスピードを一定に保つ。 ClearTypeを利用したテキストレンダリングをサポートする。また、OpenTypeフォントの機能もサポートする。 ※ClearType 関連・・・Microsoft SilverLight
https://w.atwiki.jp/wpfapp/pages/2.html
メニュー トップページ WPF概要 開発環境 コントロールの配置 メニュー リンク msdn C# によるプログラミング入門 e-manual(WPF) ここを編集
https://w.atwiki.jp/atachi/pages/42.html
NotifyMessageとはタスクバーのタスクトレイに表示されるメッセージのこと。 参考サイト http //www.codeproject.com/KB/WPF/wpf_notifyicon.aspx